package com.weixing.mall.provider.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.weixing.mall.provider.api.model.vo.AgentVo;
import com.weixing.mall.provider.model.domain.Order;
import com.weixing.mall.provider.model.vo.report.customer.*;
import com.weixing.mall.provider.model.vo.report.market.*;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @author jzy
 * @date 2020/5/30
 */
public interface DayReportMarketMapper extends BaseMapper<Order> {

    /**
     * 1市场部报表--销售情况报表
     * @param page
     * @param var2
     * @return
     */
    IPage<MarketSalesStatusVo> marketSalesStatus(Page page, @Param("ew") Wrapper<?> var2);

    /**
     * 2市场部报表--代理数据分析报表
     * @param page
     * @param var2
     * @return
     */
    IPage<MarketAgentDataAnalysisVo> marketAgentData(Page page, @Param("ew") Wrapper<?> var2);


    /**
     * 4市场部报表---推荐人报表--获取经销商下的所有代理商
     * @param var2
     * @return
     */
    List<ReferrerAgentVo> selectOrderAgentIdsByDistributorId(@Param("ew") Wrapper<?> var2);
    /**
     * 4市场部报表---获取分红人下的所有业绩人Id,或者发放人下的所有业绩人或者分红人Id
     * @param var2
     * @return
     */
    List<Long> selectIdsFromAgentGroup(@Param("ew") Wrapper<?> var2);

    /**
     * 3市场部报表--区域销售报表
     * @param var2
     * @return
     */
    List<MarketAreaSalesVo>  areaReport(@Param("ew") Wrapper<?> var2);
    /**
     * 获取订单的map
     * @param var2
     * @return
     */
    Map<String, Object> getOrderMap(@Param("ew") Wrapper<?> var2);

    /**
     * 4市场部报表--正价跟代理活动汇总表-正价跟4折活动返还款汇总
     * @param page
     * @param var2
     * @return
     */
    IPage<MarketRegularActBonusVo> regularActBonus(Page page, @Param("ew") Wrapper<?> var2);

    /**
     * 4市场部报表--正价跟代理活动汇总表-正价跟4折活动返还款汇总 - 合计
     * @param var2
     * @return
     */
    MarketRegularActBonusVo regularActBonusSum( @Param("ew") Wrapper<?> var2);

    /**
     * 市场部报表---正价跟代理活动汇总表--分红订单详情
     * @param page
     * @param var2
     * @return
     */
    IPage<CustomerSeckillBonusDetailVo> regularActBonusDetail(Page page, @Param("ew") Wrapper<?> var2);

    /**
     * 4市场部报表---正价跟代理活动汇总表--查看2%分红（一级分红）
     * @param page
     * @param var2
     * @return
     */
    IPage<CustomerSeckillBonusOneVo>  regularActBonusOne(Page page, @Param("ew") Wrapper<?> var2);

    /**
     * 4市场部报表---正价跟代理活动汇总表--查看1%分红（二级分红）
     * @param page
     * @param var2
     * @return
     */
    IPage<CustomerSeckillBonusTwoVo>  regularActBonusTwo(Page page, @Param("ew") Wrapper<?> var2);

    /**
     * 4市场部报表---正价跟代理活动汇总表
     * @param page
     * @param var2
     * @return
     */
    IPage<MarketRegularAgentVo>  regularAndActivity(Page page, @Param("ew") Wrapper<?> var2);


    /**
     * 4市场部报表---正价跟代理活动汇总表-合计
     * @param var2
     * @return
     */
    MarketRegularAgentVo regularAndActivitySum(@Param("ew") Wrapper<?> var2);

    /**
     * 4市场部报表---推荐人报表-受益人
     * @param page
     * @param var2
     * @return
     */
    IPage<MarketReferrerVo>  referrerReport(Page page, @Param("ew") Wrapper<?> var2,Long agentId);
    /**
     * 4市场部报表---推荐人报表-合计-受益人
     * @param var2
     * @return
     */
    MarketReferrerVo  referrerReportSum( @Param("ew") Wrapper<?> var2,Long agentId);
    /**
     * 4市场部报表---推荐人报表-发放人
     * @param page
     * @param var2
     * @param promoteStatus  业绩人晋升状态  1晋升前 2晋升后
     * @return
     */
    IPage<MarketReferrerSendVo>  referrerReportSend(Page page, @Param("ew") Wrapper<?> var2,Integer promoteStatus);
    /**
     * 4市场部报表---推荐人报表-合计-发放人
     * @param var2
     * @param bonusId 分红人Id
     * @param payerId 发放人Id
     * @param payerRole 发放人角色
     * @param promoteStatus  业绩人晋升状态  1晋升前 2晋升后
     * @return
     */
    MarketReferrerSendVo  referrerReportSendSum( @Param("ew") Wrapper<?> var2,Long bonusId,Long payerId,Integer payerRole,Integer promoteStatus);

    /**
     *日报详情--查询订单表-推荐人报表详情-收益人
     * @param page
     * @param var2
     * @return
     */
    IPage<CustomerReportDetailVo>  getDayReportDetail(Page page, @Param("ew") Wrapper<?> var2,Long agentId);
    /**
     *日报详情--查询订单表-推荐人报表详情-发放人
     * @param page
     * @param var2
     * @return
     */
    IPage<CustomerReportDetailVo>  getDayReportDetailSend(Page page, @Param("ew") Wrapper<?> var2,Long agentId);

    /**
     * 获取订单的map-查询订单表-推荐人报表详情-合计-受益人
     * @param var2
     * @return
     */
    Map<String, Object> getDayReportDetailTotal(@Param("ew") Wrapper<?> var2,Long agentId);
    /**
     * 获取订单的map-查询订单表-推荐人报表详情-合计-发放人
     * @param var2
     * @return
     */
    Map<String, Object> getDayReportDetailTotalSend(@Param("ew") Wrapper<?> var2,Long agentId);





















    /**
     * 广告数量
     * @param var2
     * @return
     */
    Integer adsQuantity(@Param("ew") Wrapper<?> var2);

    /**
     * 广告金额
     * @param var2
     * @return
     */
    BigDecimal adsAmount(@Param("ew") Wrapper<?> var2);

    /**
     * 广告人数
     * @param var2
     * @return
     */
    Integer adsPeopleQuantity(@Param("ew") Wrapper<?> var2);

    /**
     * 代理人数
     * @return
     */
    Integer agentQuantity(@Param("ew") Wrapper<?> var2);

    /**
     * 代理关系人数
     * @param var2
     * @return
     */
    Integer agent(@Param("ew") Wrapper<?> var2);
    /**
     * 代理退款人数
     * @param var2
     * @return
     */
    Integer agentRefund(@Param("ew") Wrapper<?> var2);
    /**
     * 会员人数
     * @param var2
     * @return
     */
    Integer memberQuantity(@Param("ew") Wrapper<?> var2);

    /**
     * 直接银级人数
     * @param var2
     * @return
     */
    Integer directQuantity(@Param("ew") Wrapper<?> var2);
    /**
     * 间接银级人数
     * @param var2
     * @return
     */
    Integer indirectQuantity(@Param("ew") Wrapper<?> var2);
    /**
     * 利益挂钩人数
     * @param var2
     * @return
     */
    Integer benefitQuantity(@Param("ew") Wrapper<?> var2);
    /**
     * 晋升为一级代理人数
     * @param var2
     * @return
     */
    Integer firstLevelQuantity(@Param("ew") Wrapper<?> var2);

}
